package com.rzcode.coinex.kernel.dao.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 交易所成交量统计实体类，用于记录每日的交易量和交易额。
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "exchange_turnover_statistics")
public class ExchangeTurnoverStatistics {

    /**
     * 成交日期，以天为最小单位统计。
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "成交日期", example = "2023-03-01")
    private Date date;

    /**
     * 年份，用于辅助日期的查询和统计。
     */
    @ApiModelProperty(value = "年份", example = "2023")
    private int year;

    /**
     * 月份，用于辅助日期的查询和统计。
     */
    @ApiModelProperty(value = "月份", example = "3")
    private int month;

    /**
     * 日，用于辅助日期的查询和统计。
     */
    @ApiModelProperty(value = "日", example = "1")
    private int day;

    /**
     * 基础货币符号，表示交易对中的基础货币。
     */
    @ApiModelProperty(value = "基础货币符号", example = "USD")
    private String baseSymbol;

    /**
     * 交易货币符号，表示交易对中的交易货币。
     */
    @ApiModelProperty(value = "交易货币符号", example = "BTC")
    private String coinSymbol;

    /**
     * 交易量，表示在给定日期内交易的基础货币总量。
     */
    @ApiModelProperty(value = "交易量", example = "12345.67890123")
    private BigDecimal amount;

    /**
     * 交易额，表示在给定日期内交易的交易货币总额。
     */
    @ApiModelProperty(value = "交易额", example = "123456.78901234")
    private BigDecimal money;
}
